home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1980-01-01 | 14.4 KB | 337 lines
3 REM ***** TCAP PROGRAM BY ALLEN KATZ ********************** 4 FOR I=1 TO 16:PRINT:NEXT:REM OPTION#0,"W",63:OPTION#2,"W",80 5 PRINT:PRINT"TSC ELECTRICAL CIRCUIT ANALYSIS PROGRAM V2.5.1 3/21/84": PRINT 7 PRINT "ALL UNITS IN VOLTS, AMPS, OHMS, FARADS, HENERIES, HZ, ETC." 8 PRINT "NODE VOLTAGES AND IMPEDANCES REFERENCED TO NODE 0 (ground)." 9 PRINT "ALL CALC ASSUMED AT DC (0 FREQ) UNLESS FREQ SET WITH F OPTION." 10 PRINT:PRINT,"K2UYH --- modified for ibm pc --- wa2tif":PRINT 15 CLEAR:PI=3.1416:P2=PI*2:P6=PI/180: REM PRECISION 4 95 REM PRINT: INPUT "DO YO WISH TO READ A FILE (Y/N)"; A$ 96 REM IF A$<>"N" THEN 95 100 PRINT: INPUT "WHAT IS THE HIGHEST NODE NUMBER"; LS 101 IF LS<1 OR LS<>INT(LS) THEN 100 110 INPUT "HOW MANY VOLTAGE SOURCES ARE IN THE CIRCUIT"; LV 112 IF LV<0 OR LV<>INT(LV) THEN 110 ELSE NO=LS+LV 115 REM KILL Y,X,T,N1,N2,V,G 120 INPUT "HOW MANY COMPONENTS ARE IN THE CIRCUIT"; CT 125 IF CT<1 OR CT<>INT(CT) THEN 120 130 DIM Y(NO,NO+1),X(NO,NO+1),T(CT+10),N1(CT+10),N2(CT+10),V(CT+10),G(CT+10) 131 FOR CR=1 TO CT: GOSUB 5000: NEXT: GOTO 1150 990 REM******************** MENUE ******************** 1000 PRINT: INPUT "YOUR SELECTION (A/C/D/END/F/H<ELP>/I/L/N/R/S/V/Z)"; C$: DV=0 1007 IF C$="END" THEN PRINT: PRINT "END TSC CAP": END 1008 C$=LEFT$(C$,2) 1009 IF C$="A" THEN GOSUB 4995 1020 IF C$="N" THEN 10 1030 IF C$="S" THEN GOSUB 3000 1050 IF C$="F" THEN GOSUB 4000 1070 IF C$="I" THEN GOSUB 12000 1085 IF C$="L" THEN GOSUB 11000 1090 IF C$="V" THEN GOSUB 6050 1110 IF C$="D" THEN GOSUB 7000 1130 IF C$="Z" THEN GOSUB 8002 1135 IF C$="R" THEN GOSUB 4992 1138 IF C$="C" THEN GOSUB 9000 1140 IF LEFT$(C$,1)<>"H" THEN 990 1150 PRINT: PRINT "OPTIONS:" 1151 PRINT TAB(10), "A - ADD CIRCUIT COMPONTENT" 1153 PRINT TAB(10), "S - SAVE CIRCUIT FILE" 1154 PRINT TAB(10), "F - SET OR SWEEP FREQUENCY" 1155 PRINT TAB(10), "I - CALCULATE SOURCE CURRENTS" 1156 PRINT TAB(10), "L - LIST PRESENT COMPONENTS" 1157 PRINT TAB(10), "V - CALCULATE NODE VOLTAGES" 1158 PRINT TAB(10), "D - DELETE CIRCUIT COMPONENT" 1159 PRINT TAB(10), "Z - CALCULATE NODE IMPEDANCE" 1160 PRINT TAB(10), "R - REPLACE CIRCUIT COMPONENT" 1162 PRINT TAB(10), "N - NEW CIRCUIT" 1164 PRINT TAB(10), "C - CHANGE AND SWEEP COMPONENT VALUE" 1165 PRINT TAB(10), "END - END SESSION": GOTO 990 1990 REM ************ FILE LOAD ****************** 2000 PRINT: INPUT "FILE NAME, DIR OR QUIT"; F$ 2002 IF F$="DIR" THEN DIR "*.CAP": GOTO 2000 ELSE IF F$="QUIT" THEN 1000 2005 F$=F$+".CAP": OPEN#1, "I", F$ 2006 READ#1, CT, LS, LV: KILL Y,X,T,N1,N2,V,G 2010 NO=LS+LV:DIM Y(NO,NO+1),X(NO,NO+1),T(CT+10),N1(CT+10),N2(CT+10),V(CT+10),G(CT+10) 2020 FOR P=1 TO CT: READ#1,T(P),N1(P),N2(P),V(P),G(P): NEXT 2150 CLOSE#1: GOTO 990 2990 REM ************ FILE SAVE ****************** 3000 PRINT: INPUT "FILE NAME"; F$: F$=F$+".CAP" 3005 ERASE F$: OPEN#1,"O",F$ 3010 WRITE#1, CT, LS, LV 3025 FOR P=1 TO CT: WRITE#1,T(P),N1(P),N2(P),V(P),G(P): NEXT 3030 CLOSE#1: RETURN 3990 REM ************* FREQ SWEEP MODULE ***************** 4000 PRINT: PRINT "MODES:" 4001 PRINT TAB(10), "1 - SINGLE FREQUENCY" 4002 PRINT TAB(10), "2 - LINEAR FREQUENCY SWEEP" 4003 PRINT TAB(10), "3 - LOG FREQUENCY SWEEP" 4010 PRINT: INPUT "FREQUENCY MODE"; LX 4020 IF LX<1 OR LX>3 THEN 4000 4050 IF LX>1 THEN 4105 4060 PRINT: INPUT "DESIRED FREQUENCY"; W 4062 PRINT" FREQUENCY SET TO "W" FOR ALL <I>, <V>, <Z> AND <C> CALCULATIONS": W=P2*W: RETURN 4105 PRINT: F2$="FREQUENCY": F1$="FREQ" 4110 PRINT:INPUT "MIN FREQ, MAX FREQ AND # OF POINTS";F1,F2,IN 4130 IF F1>=0 AND F2>=0 AND F2>=F1 THEN 4190 4140 PRINT"IMPROPER ENTRY": GOTO 4110 4190 PRINT "WHICH NODE? ( 1 -"LS") ";:INPUT ND 4200 IF ND>LS OR ND<1 THEN PRINT"NODES ARE FROM 1 TO"LS"ONLY.":GOTO 4190 4220 IF LX=2 THEN F3=F1:F4=F2:GOTO 4240 4225 F4=LOG(F2)/LOG(10):IF F1=0 THEN F3=0 ELSE F3=LOG(F1)/LOG(10) 4240 PRINT: PRINT "WORKING";: I=0: M=IN+1: II=(F4-F3)/IN 4242 REM KILL FP,FR,FY,FF: DIM FP(M),FR(M),FY(M),FF(M) 4250 FOR FX=F3 TO F4 STEP II: I=I+1: PRINT I; 4255 IF LX=3 THEN IF FX<>0 THEN W=P2*10^FX ELSE W=0 4257 IF LX=2 THEN W=P2*FX 4258 IF LX=3 AND FX<>0 THEN FF(I)=10^FX ELSE FF(I)=FX 4260 GOSUB 10000: GOSUB 6150 4270 FY(I)=Y(ND,0): FR(I)=X(ND,0): NEXT: W=0 4400 PRINT: PRINT,"VOLTAGE - "F2$" TABULATION" TAB(50)F$: PRINT 4410 PRINT "F1$" TAB(15)"REAL"TAB(26)"IMAGINARY"TAB(38)"MAGNITUDE"TAB(53)"PHASE ANGLE":PRINT:CN=0 4415 FOR I=1 TO M: MG=SQR(FY(I)^2+FR(I)^2) 4430 IF DV=0 AND CN<>0 AND CN/14=INT(CN/14) THEN INPUT"PRESS <CR> TO CONTINUE"; A$ 4440 CN=CN+1:IF FY(I)=0 THEN K=SGN(FR(I))*90 ELSE IF FY(I)>0 THEN K=1/P6*ATN(FR(I)/FY(I)) ELSE K=1/P6*ATN(FR(I)/FY(I))+180 4450 PRINT FF(I) TAB(12)FY(I) TAB(23)FR(I) TAB(38)MG TAB(53)K 4460 NEXT: PRINT: 4465 PRINT:INPUT"WANT TO PLOT VOLTAGE (Y/N)";Q$:IF Q$="Y" THEN NA$="VOLTAGE ":V$="V":DV=0:GOTO 4500 4470 PRINT:INPUT"WANT TO PLOT PHASE ANGLE (Y/N)";Q$:IF Q$="Y" THEN NA$="ANGLE ":V$="P":DV=0:GOTO 4500 4490 RETURN 4500 PRINT: INPUT "LINE WIDTH (TYP 80)"; LL: XX=LL: GOTO 13211 4990 REM *********** COMPONENT INPUT/ADD/REPLACE ************** 4992 PRINT: INPUT "COMPONENT NUMBER";L 4993 IF L<=CT AND L>0 THEN ZN=L: GOTO 5010 ELSE PRINT"INVALID COMPONENT NUMBER. ENTRY IGNORED.":RETURN 4995 ZN=CT: CT=CT+1 5000 ZN=ZN+1: IF CR>1 THEN 5010 5001 PRINT: PRINT "COMPONENT SELECTION SECTION" 5010 PRINT: PRINT "1 = RESISTOR" 5011 PRINT "2 = INDUCTOR" 5012 PRINT "3 = CAPACITOR" 5013 PRINT "4 = CURRENT SOURCE" 5014 PRINT "5 = VOLTAGE SOURCE" 5015 PRINT "6 = NPN TRANSISTOR" 5016 PRINT "7 = PNP TRANSISTOR" 5017 PRINT "8 = OPERATIONAL AMPLIFIER": PRINT 5019 INPUT "TYPE OF CIRCUIT ELEMENT"; D$ 5020 TY=VAL(D$):IF TY<1 OR TY>8 THEN 5010 ELSE 5110 5080 INPUT N1(ZN), N2(ZN), V(ZN) 5085 IF V(ZN)<0 THEN INPUT "ELEMENT VALUE MUST BE GREATER THAN 0, PROPER VALUE"; V(ZN) 5090 IF N1(ZN)<=LS AND N2(ZN)<=LS AND N1(ZN)>=0 AND N2(ZN)>=0 THEN RETURN 5100 PRINT"IMPROPER NODE. ENTRY IGNORED" 5105 T(ZN)=0:ZN=ZN-1:RETURN 5110 PRINT: PRINT "COMPONENT #"; ZN: PRINT 5111 T(ZN)=TY:ON TY GOTO 5120,5140,5150,5160,5190,5200,5200,5230 5120 PRINT"NODE A","NODE B","RESISTANCE";:GOTO 5080 5140 PRINT"NODE A","NODE B","INDUCTANCE";:GOTO 5080 5150 PRINT"NODE A","NODE B","CAPACITANCE";:GOTO 5080 5160 PRINT"- NODE","+NODE","CURRENT MAG.","PHASE ANGLE"; 5170 INPUT N1(ZN), N2(ZN), V(ZN), G(ZN) 5180 IF N1(ZN)<=LS AND N2(ZN)<=LS AND N1(ZN)>=0 AND N2(ZN)>=0 THEN RETURN ELSE 5100 5190 PRINT"- NODE","+ NODE","VOLTAGE MAG.","PHASE ANGLE";:GOTO 5170 5200 PRINT"BASE NODE","EMITTER NODE","COLLECTOR NODE","BETA";:GOTO 5170 5230 PRINT"OUTPUT","- INPUT","+ INPUT","GAIN FACTOR";:GOTO 5170 6000 REM *************** NODE VOLTAGE CALC **************** 6010 PRINT: PRINT" NODE? (0 -"LS") ";: INPUT ND: PRINT: PRINT "WORKING": GOSUB 10000 6020 IF ND>LS THEN PRINT"THE HIGHEST NODE NUMBER IS "LS:GOTO 6010 6040 IF ND>=0 THEN 6060 6050 PRINT:PRINT"ENTER NUMBER FROM 0-"LS"AN ENTRY OF 0 WILL PROVIDE SOLUTION AT ALL NODES":GOTO 6010 6060 GOSUB 6150 6065 PRINT: IF C$="I" THEN PRINT,F$,"CURRENT" ELSE GOTO 6066 6066 IF C$= "V" THEN PRINT,F$,"VOLTAGE" ELSE IF C$="Z" THEN PRINT,F$,"IMPEDANCE" 6070 PRINT"NODE"TAB(9)"REAL"TAB(23)"IMAGINARY"TAB(38)"MAGNITUDE"TAB(53)"PHASE ANGLE" 6075 IF C$="I"THEN RETURN 6080 IF ND=0 THEN 6090 6085 L=ND:GOTO 6100 6090 FOR L=1 TO LS 6100 MG=SQR(Y(L,0)^2+X(L,0)^2):IF Y(L,0)=0 THEN PA=90*SGN(X(L,0)) ELSE IF Y(L,0)>0 THEN PA=1/P6*ATN(X(L,0)/Y(L,0)) ELSE PA=1/P6*ATN(X(L,0)/Y(L,0))+180 6105 REM PRINT N1(LQ)"-"N2(LQ):GOTO 6110 6106 PRINT 6110 PRINT N1(LQ)"-"N2(LQ) TAB(9)Y(L,0) TAB(23)X(L,0) TAB(38)MG TAB(53)PA 6115 IF DV=0 AND L/11=INT(L/11)THEN INPUT"PRESS <CR> TO CONTINUE";FR:PRINT 6120 IF ND=0 THEN NEXT L 6125 IF C$="I" THEN RETURN 6130 REM IF DV=0 THEN PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN DV=2: GOTO 6065 6140 RETURN 6150 FOR L=1 TO NO: IF Y(L,L)^2+X(L,L)^2<>0 THEN 6155 ELSE FOR LT=1 TO NO:IF Y(L,LT)^2+X(L,LT)^2<>0 OR Y(LT,L)^2+X(LT,L)^2<>0 THEN 6155 ELSE NEXT LT,L:IF Y(L,NO+1)^2+X(L,NO+1)^2<>0 THEN 6155 ELSE Y(L,L)=1 6155 FOR L=1 TO NO 6160 DE=Y(L,L)^2+X(L,L)^2:IF DE>0 OR (L=NO AND DE<>0) THEN 6168 6162 IF L=NO THEN 6164 ELSE FOR LT=L+1 TO NO:IF (Y(L,L)+Y(LT,L))^2+(X(L,L)+X(LT,L))^2<0 THEN 6163 ELSE FOR LR=1 TO NO+1:Y(L,LR)=Y(L,LR)+Y(LT,LR):X(L,LR)=X(L,LR)+X(LT,LR):NEXT LR:GOTO 6160 6163 NEXT LT 6164 PRINT "ONE OF THE FOLLOWING PROBLEMS EXIST:" 6165 PRINT "(1) IMPROPER CONNECTION AT ";:IF L>LS THEN PRINT"VOLTAGE SOURCE" ELSE PRINT"NODE"L 6166 PRINT"(2) CIRCUIT WILL NOT OPERATE AT A FREQUENCY OF"W/P2" RECHECK CIRCUIT CONNECTIONS USING THE 'L' COMMAND.":PRINT:RETURN 6168 DR=Y(L,L)/DE:DI=-X(L,L)/DE 6170 FOR J=1 TO NO 6180 IF J=L THEN 6260 6190 IF ND=0 THEN 6210 6200 IF J>=L THEN 6210 ELSE IF J<>ND THEN 6260 6210 IF Y(J,L)=0 AND X(J,L)=0 THEN 6260 6220 FR=Y(J,L)*DR-X(J,L)*DI:FI=X(J,L)*DR+Y(J,L)*DI 6230 FOR P=L+1 TO NO+1 6240 TR=Y(L,P)*FR-X(L,P)*FI:TI=X(L,P)*FR+Y(L,P)*FI 6245 Y(J,P)=Y(J,P)-TR:X(J,P)=X(J,P)-TI 6250 NEXT P 6260 NEXT J 6270 NEXT L 6280 FOR L=1 TO NO:DF=Y(L,L)^2+X(L,L)^2:Y(L,0)=(Y(L,NO+1)*Y(L,L)+X(L,NO+1)*X(L,L))/DF 6290 X(L,0)=(X(L,NO+1)*Y(L,L)-Y(L,NO+1)*X(L,L))/DF:NEXT 6300 IF W<>0 THEN RETURN 6310 FOR RL=1 TO CT:IF T(RL)>5 AND T(RL)<11 THEN 6330 6320 NEXT:RETURN 6330 Y(0,0)=0:X(0,0)=0 6331 DP=SGN(Y(N1(RL),0))*SQR(Y(N1(RL),0)^2+X(N1(RL),0)^2) 6332 DM=SGN(Y(N2(RL),0))*SQR(Y(N2(RL),0)^2+X(N2(RL),0)^2) 6333 SP=SGN(Y(V(RL),0))*SQR(Y(V(RL),0)^2+X(V(RL),0)^2) 6334 DP=INT(1000*DP)/1000:DM=INT(1000*DM)/1000:SP=INT(1000*SP)/1000 6340 ON T(RL)-5 GOTO 6350,6390 6345 GOTO 6320 6350 IF DP>=DM+0.7 THEN 6370 6360 PRINT"BASE-EMITTER JUNCTION OF TRANSISTOR AT B="N1(RL)"E="N2(RL)"C="V(RL):GOTO 6480 6370 IF SP>=DP THEN 6320 6380 PRINT"BASE-COLLECTOR JUNCTION OF TRANSISTOR AT B="N1(RL)"E="N2(RL)"C="V(RL):GOTO6480 6390 IF DM-0.7<DP THEN 6360 6400 IF SP>DP THEN 6380 ELSE 6320 6480 PRINT"IS REVERSE BIASED. LINEAR CIRCUIT ANALYSIS IS NOT POSSIBLE.":RETURN 6990 REM *************** REMOVE ELEMENT ******************* 7000 PRINT: INPUT "COMPONENT NUMBER";L 7010 IF L<=CT AND L>0 THEN 7030 ELSE PRINT"INVALID COMPONENT NUMBER. ENTRY IGNORED.":RETURN 7030 IF L=CT THEN 7035 ELSE FOR P=L TO CT-1:T(P)=T(P+1):N1(P)=N1(P+1):N2(P)=N2(P+1):V(P)=V(P+1):G(P)=G(P+1):NEXT:CT=CT-1:RETURN 7035 T(CT)=0:CT=CT-1:RETURN 7990 REM ************** Z CALC ***************************** 8002 PRINT: PRINT"IMPEDANCE AT WHICH NODE? ( 1 -"LS") ";:INPUT ND: IF ND<1 OR ND>LS THEN 8002 8005 PRINT: PRINT "WORKING": PRINT:FOR L=1 TO NO:FOR CR=1 TO NO+1:Y(L,CR)=0:X(L,CR)=0:NEXT:NEXT 8010 CR=CT:FOR CT=1 TO CR 8020 IF T(CT)=5 THEN Y=1E+10:GOSUB 10040 8025 IF T(CT)<>5 THEN GOSUB 10008 8030 NEXT:CT=CR:FOR L=1 TO NO:IF L=ND THEN Y(L,NO+1)=1 ELSE Y(L,NO+1)=0 8040 X(L,NO+1)=0:NEXT:GOSUB 6150: GOTO 6065 9000 REM ************* CHANGE COMPONENT VALUES *************** 9010 PRINT: PRINT "VARIABLE COMPONENT MODE" 9015 F2$="COMPONENT VALUE": F1$="VALUE" 9020 PRINT "FREQUENCY SHOULD BE PRE-SET WITH <F> MODE <1>" 9040 PRINT: INPUT "COMPONENT # TO BE VARIED"; ZN 9050 IF ZN>CT OR ZN<1 THEN PRINT "POINT OUT OF RANGE": RETURN 9060 INPUT "MIN VALUE, MAX VALUE AND # OF POINTS"; C1,C2,IN 9070 IF C1>=0 AND C2>=0 AND C2>C1 THEN 9090 9080 PRINT "IMPROPER ENTRY": GOTO 9060 9090 PRINT "WHICH NODE? ( 1 -"LS") ";:INPUT ND 9100 IF ND>LS OR ND<1 THEN PRINT"NODES ARE FROM 1 TO"LS"ONLY.":GOTO 9090 9110 PRINT: PRINT "WORKING";: I=0: M=IN+1 9120 REM KILL FP,FR,FY,FF: DIM FP(M),FR(M),FY(M),FF(M) 9125 IF T(ZN)<6 THEN TV=V(ZN) ELSE TV=G(ZN) 9130 FOR CX=C1 TO C2 STEP (C2-C1)/IN: I=I+1: PRINT I; 9140 IF T(ZN)<6 THEN V(ZN)=CX ELSE G(ZN)=CX 9150 FF(I)=CX:GOSUB 10000:GOSUB 6150:FY(I)=Y(ND,0):FR(I)=X(ND,0):NEXT 9155 IF T(ZN)<6 THEN V(ZN)=TV ELSE G(ZN)=TV 9158 GOTO 4400 9160 REM <BACK TO FREQ SWEEP TAB MODULE> **** 9990 REM ********************* MAT ********************** 10000 FOR L=1 TO NO:FOR P=1 TO NO+1:Y(L,P)=0:X(L,P)=0:NEXT:NEXT 10002 LP=1:CR=CT:FOR CT=1 TO CR:GOSUB 10008 10004 NEXT:CT=CR:RETURN 10008 ON T(CT) GOTO 10010,10020,10030,10140,10200,10240,10250,10420 10010 IF V(CT)=0 THEN Y=1E+10 ELSE Y=1/V(CT) 10015 X=0:GOTO 10040 10020 IF W<>0 THEN X=-1/(W*V(CT)) ELSE X=0 10025 Y=0:GOTO 10040 10030 Y=0:X=W*V(CT) 10040 IF X^2+Y^2<0 AND X^2+Y^2<>0 THEN PRINT"ADMITTANCE UNDERFLOW. COMPONENT NUMBER";CT:GOTO 1000 10045 IF Y=0 THEN 10090 10050 Y(N1(CT),N1(CT))=Y(N1(CT),N1(CT))+Y 10060 Y(N1(CT),N2(CT))=Y(N1(CT),N2(CT))-Y 10070 Y(N2(CT),N1(CT))=Y(N2(CT),N1(CT))-Y 10080 Y(N2(CT),N2(CT))=Y(N2(CT),N2(CT))+Y 10090 IF X=0 THEN RETURN 10100 X(N1(CT),N1(CT))=X(N1(CT),N1(CT))+X 10110 X(N1(CT),N2(CT))=X(N1(CT),N2(CT))-X 10120 X(N2(CT),N1(CT))=X(N2(CT),N1(CT))-X 10130 X(N2(CT),N2(CT))=X(N2(CT),N2(CT))+X:RETURN 10140 Y=V(CT)*COS(P6*G(CT)):X=V(CT)*SIN(P6*G(CT)) 10160 Y(N1(CT),NO+1)=Y(N1(CT),NO+1)-Y 10170 X(N1(CT),NO+1)=X(N1(CT),NO+1)-X 10180 Y(N2(CT),NO+1)=Y(N2(CT),NO+1)+Y 10190 X(N2(CT),NO+1)=X(N2(CT),NO+1)+X:RETURN 10200 Y(N1(CT),LS+LP)=Y(N1(CT),LS+LP)+1:Y(N2(CT),LS+LP)=Y(N2(CT),LS+LP)-1 10210 Y(LS+LP,N1(CT))=Y(LS+LP,N1(CT))-1:Y(LS+LP,N2(CT))=Y(LS+LP,N2(CT))+1 10220 Y(LS+LP,NO+1)=Y(LS+LP,NO+1)+V(CT)*COS(P6*G(CT)):X(LS+LP,NO+1)=X(LS+LP,NO+1)+V(CT)*SIN(P6*G(CT)):LP=LP+1:RETURN 10240 DP=N1(CT):SP=V(CT):DM=N2(CT):SM=N2(CT):GOTO 10260 10250 DP=N2(CT):SP=N2(CT):DM=N1(CT):SM=V(CT) 10260 Y(SP,DP)=Y(SP,DP)+G(CT)*0.1 10270 Y(SP,DM)=Y(SP,DM)-G(CT)*0.1 10280 Y(SM,DM)=Y(SM,DM)+G(CT)*0.1 10290 Y(SM,DP)=Y(SM,DP)-G(CT)*0.1 10300 IF W<>0 THEN 10342 10310 Y(SP,NO+1)=Y(SP,NO+1)+0.7*G(CT)*0.1 10320 Y(SM,NO+1)=Y(SM,NO+1)-0.7*G(CT)*0.1 10330 Y(DP,NO+1)=Y(DP,NO+1)+0.07 10340 Y(DM,NO+1)=Y(DM,NO+1)-0.07 10342 Y=0.1:X=0:GOTO 10040 10370 Y(SP,DM)=Y(SP,DM)-G(CT) 10380 Y(SP,DP)=Y(SP,DP)+G(CT) 10390 Y(SM,DP)=Y(SM,DP)-G(CT) 10400 Y(SM,DM)=Y(SM,DM)+G(CT):RETURN 10420 Y=1E+10:NN=N2(CT):N2(CT)=0:GOSUB 10050:N2(CT)=NN:NN=N1(CT):N1(CT)=V(CT):Y=4.99E-07:GOSUB 10050:N1(CT)=NN 10430 G(CT)=G(CT)*1E+10:DP=N2(CT):SP=N1(CT):DM=V(CT):SM=0:GOSUB 10370 10440 G(CT)=G(CT)*0:RETURN 10990 REM **************** LIST CIRCUIT ******************* 11000 PRINT:PRINT,F$,"FREQUENCY="W/P2:PRINT 11001 PRINT,"COMP."TAB(7)"NODE":PRINT,"NO."TAB(7)"CONNECTION"TAB(27)"TYPE"TAB(39)"VALUE"TAB(53)"PHASE ANGLE" 11010 FOR L=1 TO CT:PRINT, L;TAB(7); 11020 ON T(L) GOTO 11030,11040,11050,11060,11070,11080,11090,11130 11022 PRINT 11025 IF DV=0 AND L/11=INT(L/11) THEN INPUT"PRESS <CR> TO CONTINUE";ZZ 11027 NEXT: REM IF DV=0 THEN PRINT: REM INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN DV=2: GOTO 11000 11028 RETURN 11030 PRINT,N1(L)"-"N2(L)TAB(27)"RESISTOR"TAB(39)V(L) 11035 GOTO 11025 11040 PRINT,N1(L)"-"N2(L)TAB(27)"INDUCTOR"TAB(39)V(L):GOTO 11025 11050 PRINT,N1(L)"-"N2(L)TAB(27)"CAPACITOR"TAB(39)V(L):GOTO 11025 11060 PRINT,N1(L)"-"N2(L)TAB(27)"CURRENT"TAB(39)V(L)TAB(53)G(L):GOTO 11025 11070 PRINT,N1(L)"-"N2(L)TAB(27)"VOLTAGE"TAB(39)V(L)TAB(53)G(L):GOTO 11025 11080 PRINT,"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"NPN TRANS."TAB(39)" BETA="G(L):GOTO 11025 11090 PRINT,"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"PNP TRANS."TAB(39)" BETA="G(L):GOTO 11025 11130 PRINT, "O="N1(L)"-="N2(L)"+="V(L)TAB(27)"OP AMP"TAB(39)" GAIN="G(L):GOTO 11025 11990 REM **************** CURRENT CALC ******************* 12000 PRINT: PRINT"WORKING": PRINT:ND=0:GOSUB 10000 12005 GOSUB 6150 12010 GOSUB 6065: ND=LS: FOR LQ=1 TO CT 12015 IF T(LQ)=5 THEN 12030 12020 NEXT 12025 REM PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN DV=2: GOTO 12010 12026 RETURN 12030 ND=ND+1:GOSUB 6085 12040 GOTO 12020 13000 REM *************** GRAPHICS ****************** 13210 REM ********************* PLOT ROUTEEN ************ 13211 LPRINT: IF LX=3 THEN LPRINT,"LOG FREQUENCY PLOT"; ELSE LPRINT,F2$" PLOT"; 13212 LPRINT ,TAB(35) F$:LPRINT:LF=LL-18:SN=0:SH=0:FOR I=1 TO M 13213 IF V$="P" THEN 13214 ELSE MG=SQR(FY(I)^2+FR(I)^2):GOTO 13215 13214 IF FY(I)=0 THEN K=SGN(FR(I))*90 ELSE IF FY(I)>0 THEN K=1/P6*ATN(FR(I)/FY(I)) ELSE K=1/P6*ATN(FR(I)/FY(I))+180 13215 IF V$="V" THEN FP(I)=MG ELSE FP(I)=K 13217 IF FP(I)>SH THEN SH=FP(I) 13218 IF FP(I)<SN THEN SN=FP(I):NEXT 13219 IF SN>0 THEN SN=0 ELSE SN=-SN 13220 SF=SH+SN: ZV=INT(LF*SN/SF+11): REM PRECISION 3 13222 LPRINT, F1$ TAB(LF/2+7) NA$ 13223 I1=INT(LF/2): I2=INT(LF*SH/(2*SF)): I3=INT(-LF*SN/(2*SF)): IQ=INT(LF/4): IH=INT(3*LF/4) 13224 IF SH=0 THEN LPRINT,TAB(11) SN TAB(IQ+11) 3*SN/4 TAB(I1+11) SN/2 TAB(IH+11) SN/4 TAB(LF+11) SH: GOTO 13229 13225 IF SN=0 THEN LPRINT,TAB(11) SN TAB(IQ+11) SH/4 TAB(I1+11) SH/2 TAB(IH+11) 3*SH/4 TAB(LF+11) SH: GOTO 13229 13226 IF ZV<(LF/4+11) THEN LPRINT,TAB(11) SN TAB(ZV) "0" TAB(ZV+I2) SH/2 TAB(LF+11) SH: GOTO 13229 13227 IF ZV>(3*LF/4+11) THEN LRINT,TAB(11) SN TAB(I3+11) SN/2 TAB(ZV) "0" TAB(LF+11) SH: GOTO 13229 13228 LPRINT,TAB(11) SN TAB(I3+11) SN/2 TAB(ZV) "0" TAB(ZV+I2) SH/2 TAB(LF+11) SH 13229 REM LPRINT STRING$,("-",10) "+"; 13230 IF SN=0 OR SH=0 THEN LPRINT, STRING$("-",IQ-1) "+" STRING$("-",I1-IQ-1) "+" STRING$("-",IH-I1-1) "+" STRING$("-",LF-IH-1) "+": GOTO 13240 13231 IF ZV<(LF/4+11) THEN LPRINT, STRING$("-",ZV-12) "+" STRING$("-",I2-1) "+" STRING$("-",LF-ZV-I2+10) "+": GOTO 13240 13232 IF ZV>(3*LF/4+11) THEN LPRINT, STRING$("-",I3-1) "+" STRING$("-",ZV-I3-12) "+" STRING$("-",LF-ZV+10) "+": GOTO 13240 13233 LPRINT, STRING$("-",I3-1) "+" STRING$("-",ZV-I3-12) "+" STRING$("-",I2-1) "+" STRING$("-",LF-ZV-I2+10) "+" 13240 CN=0:FOR I=1 TO M:VN=INT(LF*(SN+FP(I))/SF+11):LPRINT,FF(I); 13241 IF VN>11 THEN LPRINT,TAB(11)"|"; 13242 IF VN=ZV THEN LPRINT, TAB(ZV)"*": GOTO 13245 13243 IF VN>ZV AND ZV>11 THEN LPRINT,TAB(ZV)"."TAB(VN)"*" ELSE IF VN>ZV THEN PRINT#DV,TAB(VN)"*": GOTO 13245 13244 LPRINT,TAB(VN)"*"TAB(ZV)"." 13245 IF DV=0 AND CN<>0 AND CN/12=INT(CN/12) THEN INPUT"PRESS <CR> TO CONTINUE"; A$ 13246 CN=CN+1 13247 NEXT I: REM INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN DV=2: LL=74: GOTO 13211 13248 IF V$="V" THEN PRINT:INPUT"WANT TO PLOT PHASE ANGLE (Y/N)";Q$:IF Q$="Y" THEN NA$="ANGLE ":V$="P":DV=0:LL=XX:GOTO 13211 13249 IF V$="P" THEN PRINT:INPUT"WANT TO PLOT VOLTAGE (Y/N)";Q$:IF Q$="Y" THEN NA$="VOLTAGE ":V$="V":DV=0:LL=XX:GOTO 13211 13250 REM PRECISION 4: RETURN